<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>04JS运算符</title>
</head>
<body>
<script>
    //除法会根据实际情况显示运算结果
    console.log(3/2);//1.5
    console.log(6/2);//3

    //如果比较运算符左右两边有数字，会自动转换成数字类型进行比较
    console.log(3>10);//false
    console.log(3>'10');//'10'会转为数字10 false
    console.log('3'>10);//false
    let a=1;
    let b=true;
    //松散比较运算符，只比较值，Number（true）=1
    console.log(a==b);//true
    //严格比较运算符，先比较类型，在比较值  number≠boolean
    console.log(a===b);//false

    //如果比较运算符左右两边都是字符串，会比较字符的ASCII码值
    //charCodeAt()方法，返回字符串中指定位置的字符的ASCII码值
    console.log('3'>'10');
    console.log('超'>'博')
    console.log('3'.charCodeAt());//51
    console.log('10'.charCodeAt(0));//49
    console.log('1'.charCodeAt());//49

    //Number()将参数转为数字，如果得不到数值类型的结果，会得到NAN（Not a Number）
    console.log(Number('3'),typeof Number('3'))//3 'number'
    console.log(Number(true),typeof Number(true))//1 'number'
    console.log(Number(false),typeof Number(false))//0 'number'
    console.log(Number('abc'),typeof Number('abc'))//NAN 'number'

    //Boolean()将参数转为布尔类型的值
    //如果参数是0 空字符串 null undefined NaN 都会转为false
    //其他值都会转为true
    console.log(Boolean(0));//false
    console.log(Boolean(''));//false
    console.log(Boolean(null));//false
    console.log(Boolean(undefined));//false
    console.log(Boolean(NaN));//false
    console.log(Boolean(' '));//true
    console.log(Boolean('abc'));//true

    //三元运算符
    let c=0;
    console.log(c==0?'YES':'NO')//YES
    //=是赋值符号，给c赋值为0，Boolean(0)=false,所以取'NO'
    console.log(c=0?'YES':'NO')//NO
</script>
</body>
</html>